package org.example.utils;

import jakarta.servlet.http.HttpServletRequest;

/**
 * 用户上下文工具类，用于在控制器中获取当前登录用户信息
 */
public class UserContextUtil {
    
    /**
     * 从请求中获取当前登录用户的ID
     * @param request HTTP请求对象
     * @return 用户ID，如果未登录或获取失败则返回null
     */
    public static Long getCurrentUserId(HttpServletRequest request) {
        Object userId = request.getAttribute("userId");
        if (userId instanceof Long) {
            return (Long) userId;
        }
        return null;
    }
    
    /**
     * 从请求中获取当前登录用户的ID，如果不存在则抛出异常
     * @param request HTTP请求对象
     * @return 用户ID
     * @throws RuntimeException 如果用户未登录
     */
    public static Long getCurrentUserIdOrThrow(HttpServletRequest request) {
        Long userId = getCurrentUserId(request);
        if (userId == null) {
            throw new RuntimeException("用户未登录或登录状态无效");
        }
        return userId;
    }
}